﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace InfoJetSoft.Service.XPath.Exprs
{
    public interface ICalculator
    {
        //CID 0810 //2011.02.28 //Begin
        bool FullPath { get; }
        //CID 0810 //2011.02.28 //End

        //CID 0806 //2011.02.27 //Begin
        void SetBaseNode(object node);
        object GetBaseNode();
        //CID 0889 //2011.05.24 //Begin
        INodeList GetContextNodes(bool isAbbrStep);
        //CID 0889 //2011.05.24 //End
        //CID 0806 //2011.02.27 //End
        
        //CID 0798 0806 //2011.02.27 //Begin
        void NewContext();
        void NewContext(object contextNode);
        void DeleteContext();
        //CID 0798 0806 //2011.02.27 //End

        //CID 0766 //2011.02.25 //Begin
        INodeList CreateNodeList();
        string GetNodeValue(object node);
        //CID 0766 //2011.02.25 //End

        //CID 0797 //2011.02.28 //Begin
        string GetNodeLocalName(object node);
        string GetNodeNamespaceUri(object node);
        string GetNodeName(object node);
        //CID 0797 //2011.02.28 //End

        //CID 0815 //2011.03.01 //Begin
        object GetRootNode();
        //CID 0815 //2011.03.01 //End
        //CID 0817 //2011.03.02 //Begin
        //CID 0889 //2011.05.24 //Begin
        object GetParentNode(object node, bool isAbbrStep);
        //CID 0889 //2011.05.24 //End
        //CID 0817 //2011.03.02 //End

        //CID 0798 //2011.02.18 //Begin
        void Slash(object contextNodes);
        void SlashSlash(object contextNodes);
        //CID 0798 //2011.02.18 //End

        //CID 0816 //2011.03.02 //Begin
        void Axis(string axisName);
        //CID 0816 //2011.03.02 //End
        //CID 0818 //2011.03.02 //Begin
        object NameTest(string name);
        //CID 0818 //2011.03.02 //End
        //CID 0821 //2011.03.03 //Begin
        object NodeType(string type);
        //CID 0821 //2011.03.03 //End
        //CID 0822 //2011.03.03 //Begin
        object PI(string value);
        //CID 0822 //2011.03.03 //End

        //CID 0824 //2011.03.03 //Begin
        object ResolveVariable(string name);
        //CID 0824 //2011.03.03 //End

        //CID 0826 //2011.03.06 //Begin
        object CallCustomFunction(string name, List<object> args);
        //CID 0826 //2011.03.06 //End

        //CID 0825 //2011.03.06 //Begin
        void Init();
        //CID 0825 //2011.03.06 //End

        //CID 0909 //2011.05.15 //Begin
        bool IsLastStep { get; set; }
        //CID 0909 //2011.05.15 //End

        //CID 0947 //2011.06.13 //Begin
        bool IsAggregating { get; set; }
        //CID 0947 //2011.06.13 //End

        //CID 0945 //2011.06.16 //Begin
        bool DisableFilter { get; }
        //CID 0945 //2011.06.16 //End
    }
}
